// Proceso.h: interface for the CProceso class.
//
//////////////////////////////////////////////////////////////////////

#pragma once

#include <Qt>
#include <QThread>
#include "time.h"

class Proceso : public QThread
{
protected:
    unsigned int m_TiempoLatencia;       // Tiempo de latencia entre bucles
    unsigned int m_TiempoBucle;          // Tiempo en ejecutar el bucle actual
    unsigned int m_TiempoMaximoBucle;    // Tiempo maximo en ejecutar un bucle

    bool m_bTerminar;    // Peticion de terminar el proceso
    bool m_bActivo;     // Indica si esta activo el proceso

private:
    void run();

protected:
    virtual void inicio() { }
    virtual void proceso() = 0;
    virtual void fin() { }

    virtual bool puedeTerminar() { return true; }

public:
    Proceso();
    virtual ~Proceso();

    virtual bool activar();
    virtual void desactivar(bool esperar = false);
    virtual bool activo() { return m_bActivo; }

    void setLatencia (unsigned int tiempoLatencia) { m_TiempoLatencia = tiempoLatencia; }
    unsigned int getLatencia () { return m_TiempoLatencia; }
    unsigned int getTiempoMaximoBucle() { return m_TiempoMaximoBucle; }
};


